package morpion;

public class Morpion {
	
	// Pour faire comme othello
	public final static int COL=3;
    public final static int ROW=3;
    public final static int BLACK =0;
    public final static int WHITE =1;
    public final static int EMPTY =2;
	
	private int[][] mat;
	public Morpion(){
		mat=new int[COL][ROW];
		for (int i=0; i<COL; i++)
			for(int j=0; j<ROW; j++)
				mat[i][j]=EMPTY;
		
	}
	
	public int get(int x, int y){
		return mat[x][y];
	}
	
	public int get(int p){
		return mat[p/3][p%3];
	}
	
	public int getVal(int p){
		switch (mat[p/3][p%3]) {
		case BLACK:
			return 4;
		case WHITE:
			return 1;
		case EMPTY:
			return 0;
		default:
			return 0;
		}
	}
	
	public int getVal(int x, int y){
		switch (mat[x][y]) {
		case BLACK:
			return 4;
		case WHITE:
			return 1;
		case EMPTY:
			return 0;
		default:
			return 0;
		}
	}
	
	public void set(int x, int y,int v){
		mat[x][y]=v;
	}
	
	public int end(){
		// A faire test de fin
//		int case_vert;
//		int case_hor;
//		for(int i=0; i<ROW; i++){
//			case_vert=mat[i][0];
//			case_hor=mat[0][i];
//			if ((case_vert==mat[i][1])&& (case_vert==mat[i][2])) return case_vert;
//			if ((case_hor==mat[1][i])&& (case_hor==mat[2][i])) return case_hor;	
//		}
		
		//vert
		if(mat[0][0] != Morpion.EMPTY && (mat[0][0]==mat[0][1])&&(mat[0][1]==mat[0][2])) return mat[0][0];
		if(mat[1][0] != Morpion.EMPTY && (mat[1][0]==mat[1][1])&&(mat[1][1]==mat[1][2])) return mat[1][0];
		if(mat[2][0] != Morpion.EMPTY && (mat[2][0]==mat[2][1])&&(mat[2][1]==mat[2][2])) return mat[2][0];
		//hor
		if(mat[0][0] != Morpion.EMPTY && (mat[0][0]==mat[1][0])&&(mat[1][0]==mat[2][0])) return mat[0][0];
		if(mat[0][1] != Morpion.EMPTY && (mat[0][1]==mat[1][1])&&(mat[1][1]==mat[2][1])) return mat[0][1];
		if(mat[0][2] != Morpion.EMPTY && (mat[0][2]==mat[1][2])&&(mat[1][2]==mat[2][2])) return mat[0][2];
		//diag
		if(mat[0][0] != Morpion.EMPTY && (mat[0][0]==mat[1][1])&&(mat[1][1]==mat[2][2])) return mat[0][0];
		if(mat[0][2] != Morpion.EMPTY && (mat[0][2]==mat[1][1])&&(mat[1][1]==mat[2][0])) return mat[0][2];

		
		for (int i=0; i<COL; i++)
			for(int j=0; j<ROW; j++)
				if (mat[i][j] == EMPTY)
					return 2;
		return -1;
	}
	
	public String toString(){
		String s="";
		for(int i=0; i<COL; i++){
			for(int j=0; j<ROW; j++)
				if(mat[i][j]!=2)
					s+=mat[i][j] + " ";
				else s+= ". ";
			s+='\n';
		}
		return s;
	}
	

}
